import axios from 'axios';
import {message} from "ant-design-vue"; // 引入axios
import env from '../../build/env.json'

var instance = axios.create({
  baseURL: env[import.meta.env.MODE].url,
  timeout:6000,
  headers:{
    'Content-Type': 'application/json;charset=utf-8;'
  }
})

// let loading;
// 正在请求的数量
let requestCount = 0;
// 显示loading
const showLoading = ()=>{
  // if(requestCount === 0 && !loading){
    // loading = ElLoading.service({
    //
    // })
  // }

  // requestCount++;
}

const hideLoading = () => {
  // requestCount --
  // if(requestCount == 0){
  //   // loading.close();
  // }
}

// 请求拦截器
instance.interceptors.request.use((config) => {
  showLoading()
  //每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上
  const token = window.localStorage.getItem('token')
  token && (config.headers.Authorization = token)
  //若请求方式为post,则将data参数转为JSON字符串
  if(config.method === 'POST'){
    config.data = JSON.stringify(config.data)
  }
  return config;
}, (error) => {
  Promise.reject(error)
})
let errorMsg = '';
//响应拦截器
instance.interceptors.response.use((response) => {
  hideLoading()
  // 响应成功
  // console.log('响应成功')
  return response.data;
},(error) => {
  // console.log(error)
  if(error.response && error.response.status){
    const status = error.response.status;
    switch(status){
      case 400:
        errorMsg = '请求错误';
        break;
      case 401:
        errorMsg = '请求错误';
        break;
      case 404:
        errorMsg = '请求地址出错';
        break;
      case 408:
        errorMsg = '请求超时';
        break;
      case 500:
        errorMsg = '服务器内部错误!';
        break;
      case 501:
        errorMsg = '服务未实现!';
        break;
      case 502:
        errorMsg = '网关错误!';
        break;
      case 503:
        errorMsg = '服务不可用!';
        break;
      case 504:
        errorMsg = '网关超时!';
        break;
      case 505:
        errorMsg = 'HTTP版本不受支持';
        break;
      default:
        errorMsg = '请求失败'
    }
    message.error(errorMsg)
    return Promise.reject(error)
  }
  return Promise.reject(error)
})

export default instance;
